let doing = null;
function handle(msg) {
  let args = msg.split(" ");
  args[0] = args[0].toLowerCase();
  addLine(msg, ">"); //将输入的输出到界面
  if (args[0] == "exit") {
    doing = null;
  } 
  else if (doing == null) {
    if (args[0] == "clear") {
      clear();
    } else if (args[0] == "bobo") {
      bobo();
    } else if (args[0] == "help" || args[0] == "帮助") {
      help();
    } else if (args[0] == "about" || args[0] == "关于") {
      about();
    } else if (args[0] == "猜数字") {
      doing = csz;
      doing.start(msg, args);
    } else if (args[0] == "贪吃蛇") {
      showFrame("tcs.html");
    } else if (args[0] == "时间") {
      addLine("现在是：" + new Date().format("yyyy年MM月dd日 HH:mm:ss"));
    } else if (args[0] == "代码" || args[0] == "code") {
      showCode();
    } else {
      let inPreDom = $("#in-prefix");
      let load = ["-", "\\", "|", "/"];
      let loadIndex = 0;
      let interval = setInterval(() => {
        inPreDom.text(load[loadIndex++ % load.length]);
      }, 100);
      $.ajax({
        method: "POST",
        url: "http://localhost:8080/handle",
        //  默认情况下，标准的跨域请求是不会发送cookie的
        xhrFields: {
          withCredentials: true,
        },
        data: msg,
        // dataType:"json",
        contentType: "application/json; charset=utf-8",
        success: function (res) {
          addLine(res, "<"); //获取返回值并输出
        },
        complete: function () {
          clearInterval(interval);
          inPreDom.text(">");
        },
      });
    }
  } else {
      doing.handle(msg);
  }
  inDom.val(""); //清空输入框
}
function help() {
  addLine(" 欢迎来到Bobo指令帮助中心", "<");
  addLine("   <b>clear</b> - 清除控制台", "<");
  addLine("   <b>百科</b> - 例如：百度百科 飞瞰数据中台", "<");
  addLine("   <b>翻译</b> - 例如：翻译 我的队友们团结帅气漂亮又可爱", "<");
  addLine("   <b>天气</b> - 例如：查天气 武汉", "<");
  addLine("   <b>猜数字</b> - 猜数字小游戏", "<");
  addLine("   <b>贪吃蛇</b> - 贪吃蛇小游戏", "<");
  addLine("   <b>对对联</b> - 例如：对对联 一年四季行好运", "<");
  addLine("   <b>help/帮助</b> - 打开帮助中心", "<");
  addLine("   <b>about/关于</b> - 查看作者信息", "<");
  addLine("   <b>code/代码</b> - 查看页面源代码", "<");
  addLine("");
}
function bobo() {
  addLine(" 欢迎使用Bobo助理，请告诉我您的需求", "<");
}
function about() {
  addLine(" 关于", "<");
  addLine(" 我们是 <b style='color:red'>没有Bug</b> 组", "<");
  addLine(" 我的可爱的队友们（拼音排序）：", "<");
  addLine(" 陈波、龚晓勇、侯会达、毛俊、王卫祥、徐旺、张宇", "☆");
  addLine("　　＿　　　＿　　　　　　　＿＿＿＿　　　　　　　　　　　　　　","<");
  addLine("　｜　＼　｜　｜　　　　　｜　　＿　＼　　　　　　　　　　　　　","<")
  addLine("　｜　　＼｜　｜　＿＿＿　｜　｜＿）　｜＿　　　＿　　＿＿　＿　","<")
  addLine("　｜　．　　　｜／　＿　＼｜　　＿　＜｜　｜　｜　｜／　＿　　｜","<")
  addLine("　｜　｜＼　　｜　（＿）　｜　｜＿）　｜　｜＿｜　｜　（＿｜　｜","<")
  addLine("　｜＿｜　＼＿｜＼＿＿＿／｜＿＿＿＿／　＼＿＿＿＿｜＼＿＿，　｜","<")
  addLine("　　　　　　　　　　　　　　　　　　　　　　　　　　　＿＿／　｜","<")
  addLine("　　　　　　　　　　　　　　　　　　　　　　　　　　｜＿＿＿／　","<")
  doTTS("我的团队成员贼牛！");
  //没写
}
function clear() {
  ulDom[0].innerHTML="";
}
function showCode() {
  function HTMLEncode(html) {
    html = html.replaceAll(" ","　").replace("\t","　")
    var temp = document.createElement("div");
    temp.textContent != null ? (temp.textContent = html) : (temp.innerText = html);
    var output = temp.innerHTML;
    temp = null;
    return output;
  }
  let html = document.getElementsByTagName("html")[0].innerHTML;
  let lines = html.split("\n");
  let index = 0;
  let interval = setInterval(() => {
    addLine(HTMLEncode(lines[index++]), "<", false);
    if (index == lines.length){
        clearInterval(interval);
        doTTS("看这代码，是不是很牛");
    }
  }, 60);
}
function showFrame(url) {
  textContentDom.css("display", "none");
  frameDom.attr("src", url + "?" + Date.now()).css("display", "block");
  setTimeout(() => {
    frameDom.context.body.click();
  }, 1);
}
function hideFrame() {
  textContentDom.css("display", "block");
  frameDom.css("display", "none");
}
function addLine(msg = "", xsf = "", say = true) {
  msg = msg.replaceAll(" ","&nbsp;")
  if (xsf) msg = xsf + " " + msg;
  if (say) doTTS(msg);
  ulDom.append("<li>" + msg + "</li>"); //将输入的输出到界面
  go2Bottom()
}
function go2Bottom() {
  inDom[0].scrollIntoView(); //滚动条拉到最下面，显示出输入框
}
function title(msg) {}
function system(msg) {
  console.log(msg);
}

let curX, curY;
function gotoxy(x, y) {
  curX = x;
  curY = y;
}
function printf(msg) {
  let text = ulDom.children()[curY].innerText;
  text = text.substring(0, curX) + msg + text.substring(curX + msg.length);
  ulDom.children()[curY].innerText = text;
}
Date.prototype.format = function (fmt) {
  var o = {
    "M+": this.getMonth() + 1, //月份
    "d+": this.getDate(), //日
    "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
    "H+": this.getHours(), //小时
    "m+": this.getMinutes(), //分
    "s+": this.getSeconds(), //秒
    "q+": Math.floor((this.getMonth() + 3) / 3), //季度
    S: this.getMilliseconds(), //毫秒
  };
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
  return fmt;
};
